﻿using clasesBase;
using Logica;
using System.Drawing;
using System.Windows.Forms;
using System;
using accesoDatos;

namespace PlanificacionProduccion
{
    public partial class FrmMateriaPrimaDet : FrmABM
    {
        public FrmMateriaPrimaDet()
        {
            InitializeComponent();
        }

        private void load_Load(object sender, System.EventArgs e)
        {
            datosUnidades.DataSource = UnidadMedida.listarElementos(UnidadMedida.tablaBD);
            if (datosUnidades.Count > 0)
            {
                cmbUnidades.DisplayMember = "nombre";
                cmbUnidades.ValueMember = "id";
            }

            if (base.idElemento != 0) mostrarDatos();
        }

        private void mostrarDatos()
        {
            MateriaPrima elem = new MateriaPrima(base.idElemento);

            txtId.Text = elem.ID.ToString();
            txtNombre.Text = elem.Nombre.Trim();
            txtDescripcion.Text = elem.Descripcion.Trim();
            cmbUnidades.SelectedValue = elem.ObjUnidadMedida.ID;
        }

        private void btnGuardar_Click(object sender, System.EventArgs e)
        {
            quitarResaltado();
            if (camposCompletos())
            {
                if (Notificador.accionGuardarConfirmada())
                {
                    // Si se tratase de un elemento nuevo, el id correspondiente es 0.
                    int idElemento = txtId.Text.Trim() == "" ? 0 : Convert.ToInt32(txtId.Text);

                    MateriaPrima elem = new MateriaPrima(idElemento);
                    elem.Nombre = txtNombre.Text.Trim();
                    elem.Descripcion = txtDescripcion.Text.Trim();
                    int idUnidad = cmbUnidades.SelectedValue != null ? (int)cmbUnidades.SelectedValue : 0;
                    if (elem.ObjUnidadMedida.ID != idUnidad) elem.ObjUnidadMedida = new UnidadMedida(idUnidad);

                    // Guardo la información
                    string error = elem.guardar();
                    Notificador.resultadoABM(idElemento == 0 ? TipoOperacionABM.ALTA : TipoOperacionABM.MODIFICACION, error);
                    if (error.Trim() == "") this.Close();
                }
            }
            else Notificador.camposNoCompletos();
        }

        private bool camposCompletos()
        {
            bool completos = true;

            if (txtNombre.Text.Trim() == "") { completos = false; lblNombre.ForeColor = Color.Red; }
            if (cmbUnidades.Text.Trim() == "") { completos = false; lblUnidades.ForeColor = Color.Red; }

            return completos;
        }

        private void quitarResaltado()
        {
            lblNombre.ForeColor = Color.Black;
            lblUnidades.ForeColor = Color.Black;
        }
    }
}
